home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 6 / CU Amiga Magazine's Super CD-ROM 06 (1996)(EMAP Images)(GB)(Track 1 of 4)[!][issue 1997-01].iso / cucd / prog / mui / modula / txt / muiclasses.def next >
Text File  |  1996-08-14  |  52KB  |  1,212 lines

  1. DEFINITION MODULE MuiClasses;
  2.  
  3. (***************************************************************************
  4. **
  5. ** $VER: MuiClasses.def 3.6 (13.8.96)
  6. **
  7. ** The following updates have been done by
  8. **
  9. **   Olaf "Olf" Peters <olf@informatik.uni-bremen.de>
  10. **
  11. ** $HISTORY:
  12. **
  13. **  13.8.96  3.6   : updated for MUI 3.6 release
  14. **  21.2.96  3.3   : updated for MUI 3.3 release
  15. **  23.1.96  3.2   : updated for MUI 3.2 release
  16. ** 18.11.95  3.1   : updated for MUI 3.1 release
  17. **
  18. ***************************************************************************)
  19.  
  20. (*************************************************************************
  21. ** Structures and Macros for creating MUI custom classes.
  22. **
  23. ** converted for M2 by Christian 'Kochtopf' Scholz
  24. **
  25. **************************************************************************
  26. **
  27. ** $Id: MuiClasses.def,v 1.11 1996/08/14 23:23:49 olf Exp olf $
  28. **
  29. ** /// "$Log: MuiClasses.def,v $
  30. # Revision 1.11  1996/08/14  23:23:49  olf
  31. # bumped to MUI 3.6
  32. #
  33. # Revision 1.10  1996/08/14  01:39:07  olf
  34. # MUI 3.5
  35. #
  36. # Revision 1.9  1996/03/01  13:27:47  olf
  37. # *** empty log message ***
  38. #
  39. # Revision 1.8  1996/02/21  17:43:01  olf
  40. # MUI 3.3 release
  41. #
  42. # Revision 1.7  1996/01/25  20:24:36  olf
  43. # revised for MUI 3.2
  44. #
  45. # Revision 1.6  1995/12/15  16:37:53  olf
  46. # - applied changes from Stefan Schulz
  47. # - cleanup of IMPORT section
  48. #"
  49. # Revision 1.5  1995/11/18  16:46:18  olf
  50. # MUI Release 3.1
  51. #
  52. # Revision 1.4  1995/11/02  20:02:47  olf
  53. # updated to muimaster 11.3283
  54. #
  55. # Revision 1.3  1995/10/23  17:59:16  olf
  56. # *** empty log message ***
  57. #
  58. # Revision 1.2  1995/10/23  17:06:34  olf
  59. # *** empty log message ***
  60. #
  61. # Revision 1.1  1995/09/25  15:32:52  olf
  62. # Initial revision
  63. #
  64. # Revision 1.8  1994/08/16  20:24:55  Kochtopf
  65. # mCustumClassPtr hinzugefügt
  66. # mCustomClass nach M2-Standard umbenannt
  67. #
  68. # Revision 1.7  1994/08/16  19:41:22  Kochtopf
  69. # added MUIKEYPOPUP
  70. #
  71. # Revision 1.6  1994/06/30  21:03:01  Kochtopf
  72. # changed again SHORTINT to SHORTCARD for madAddLeft, etc.
  73. #
  74. # Revision 1.5  1994/06/30  20:56:40  Kochtopf
  75. # Typ bei madAddLeft, etc. von BYTE in SHORTINT geändert, um
  76. # besser damit rechnen zu können.
  77. #
  78. # Revision 1.4  1994/06/27  22:04:58  Kochtopf
  79. # changed name from MUIClasses to MuiClasses
  80. # added definition of mCustomClass
  81. #
  82. # Revision 1.3  1994/06/23  21:36:53  Kochtopf
  83. # upgraded to MUI 2.1
  84. # added mCustumClass-Definition
  85. #
  86. # Revision 1.2  1994/02/19  12:42:19  Kochtopf
  87. # Neue Prozeduren hinzugefuegt, die in mui.h definiert waren.
  88. # Ausserdem etwas die Reihenfolge geaendert, so dass man jetzt alles
  89. # benutzen koennen sollte.
  90. #
  91. # Revision 1.1  1994/02/02  09:37:18  Kochtopf
  92. # Initial revision
  93. #
  94. **\\\
  95. **************************************************************************)
  96.  
  97. FROM SYSTEM     IMPORT  ADDRESS, WORD, BYTE, LONGSET, SHIFT;
  98. FROM IFFParseD  IMPORT  IFFHandlePtr;
  99. FROM MuiD       IMPORT  mInputHandlerNodePtr, mEventHandlerNodePtr, mListTestPosResultPtr, APTR ;
  100.  
  101. IMPORT
  102.   ed : ExecD,
  103.   gd : GraphicsD,
  104.   id : IntuitionD,
  105.   R,
  106.   ud : UtilityD ;
  107.  
  108. TYPE
  109.   StrPtr = POINTER TO ARRAY [0..MAX(LONGINT)-1] OF CHAR ;
  110.  
  111. (*
  112. ** at the beginning some general things used for BOOPSI-Objects
  113. *)
  114.  
  115. (* get a pointer to our instance data *)
  116.  
  117. PROCEDURE InstData(cl : id.IClassPtr; obj : id.ObjectPtr) : ADDRESS;
  118.  
  119. (* get the size ... *)
  120.  
  121. PROCEDURE InstSize(cl : id.IClassPtr) : CARDINAL;
  122.  
  123.  
  124. (*
  125. ** now the things concerning MUI's view of the things
  126. **
  127. ** GENERAL NOTES:
  128. **
  129. ** - Everything described in this defintion file is only valid within
  130. **   MUI classes. You may never use any of these things out of
  131. **   a class, e.g. in a traditional MUI application.
  132. **
  133. ** - Except when otherwise stated, all structures are strictly read only.
  134. *)
  135.  
  136. (* Pointer-Types *)
  137.  
  138. TYPE mGlobalInfoPtr     = POINTER TO mGlobalInfo;
  139.      mMinMaxPtr         = POINTER TO mMinMax;
  140.      mNotifyDataPtr     = POINTER TO mNotifyData;
  141.      mAreaDataPtr       = POINTER TO mAreaData;
  142.      mRenderInfoPtr     = POINTER TO mRenderInfo;
  143.      mConfigurationPtr  = ADDRESS;
  144.      mCustomClassPtr    = POINTER TO mCustomClass;
  145.  
  146.  
  147. (* 
  148. ** Definitions for madFlags 
  149. ** (you will get these flags e.g. with a Draw-Method.)
  150. *)
  151.  
  152. TYPE  MADFlags = (drawObject, (* completely redraw yourself *)
  153.                   drawUpdate, (* only update! *)
  154.                   p2, p3, p4, p5, p6, p7, p8, p9, p10, p11,
  155.                   p12, p13, p14, p15, p16, p17, p18, p19, p20, p21,
  156.                   p22, p23, p24, p25, p26, p27, p28, p29, p30, p31
  157.                   (* rest is private, but must be specified to get a LONGSET *)
  158.                  );
  159.  
  160.       MADFlagSet = SET OF MADFlags;
  161.  
  162.  
  163. (* 
  164. ** Type definitions of some important Methods
  165. ** You will need them in your own classes.
  166. *)
  167.  
  168. (*/// "Notify"
  169. *)
  170.  
  171.         mpCallHookPtr          = POINTER TO mpCallHook;
  172.         mpCallHook             = RECORD
  173.                                  methodID  : LONGINT;
  174.                                  hook      : ud.HookPtr;
  175.                                  param1    : LONGINT;
  176.                                  (* ... *)
  177.                                END;
  178.         mpExportPtr            = POINTER TO mpExport ;
  179.         mpExport               = RECORD
  180.                                  methodID : LONGINT ;
  181.                                  datapase : id.ObjectPtr ;
  182.                                END;
  183.         mpFindUDataPtr         = POINTER TO mpFindUData;
  184.         mpFindUData            = RECORD
  185.                                  methodID  : LONGINT;
  186.                                  data      : LONGINT;
  187.                                END;
  188.         mpGetConfigItemPtr     = POINTER TO mpGetConfigItem ;
  189.         mpGetConfigItem        = RECORD
  190.                                  methodID  : LONGINT;
  191.                                  id        : LONGINT;
  192.                                  storage   : APTR;
  193.                                END;
  194.         mpGetUDataPtr          = POINTER TO mpGetUData;
  195.         mpGetUData             = RECORD
  196.                                  methodID  : LONGINT;
  197.                                  udata     : LONGINT;
  198.                                  attr      : LONGINT;
  199.                                  storage   : APTR;
  200.                                END;
  201.         mpImportPtr            = POINTER TO mpImport ;
  202.         mpImport               = RECORD
  203.                                  methodID : LONGINT ;
  204.                                  datapase : id.ObjectPtr ;
  205.                                END;
  206.         mpKillNotifyPtr        = POINTER TO mpKillNotify;
  207.         mpKillNotify           = RECORD
  208.                                  methodID  : LONGINT;
  209.                                  trigAttr  : LONGINT;
  210.                                END;
  211.         mpMultiSetPtr          = POINTER TO mpMultiSet;
  212.         mpMultiSet             = RECORD
  213.                                  methodID  : LONGINT;
  214.                                  attr      : LONGINT;
  215.                                  val       : LONGINT;
  216.                                  obj       : APTR;
  217.                                  (* ... *)
  218.                                END;
  219.         mpNoNotifySetPtr       = POINTER TO mpNoNotifySet;
  220.         mpNoNotifySet          = RECORD
  221.                                  methodID  : LONGINT;
  222.                                  attr      : LONGINT;
  223.                                  format    : StrPtr;
  224.                                  val       : LONGINT;
  225.                                  (* ... *)
  226.                                END;
  227.         mpNotifyPtr            = POINTER TO mpNotify;
  228.         mpNotify               = RECORD
  229.                                  methodID  : LONGINT;
  230.                                  trigAttr  : LONGINT;
  231.                                  trigVal   : LONGINT;
  232.                                  destObj   : APTR;
  233.                                  followParams:LONGINT;
  234.                                  (* ... *)
  235.                                END;
  236.         mpSetPtr               = POINTER TO mpSet;
  237.         mpSet                  = RECORD
  238.                                  methodID  : LONGINT;
  239.                                  attr      : LONGINT;
  240.                                  val       : LONGINT;
  241.                                END;
  242.         mpSetAsStringPtr       = POINTER TO mpSetAsString;
  243.         mpSetAsString          = RECORD
  244.                                  methodID  : LONGINT;
  245.                                  attr      : LONGINT;
  246.                                  format    : StrPtr;
  247.                                  val       : LONGINT;
  248.                                  (* ... *)
  249.                                END;
  250.         mpSetUDataPtr          = POINTER TO mpSetUData;
  251.         mpSetUData             = RECORD
  252.                                  methodID  : LONGINT;
  253.                                  udata     : LONGINT;
  254.                                  attr      : LONGINT;
  255.                                  val       : LONGINT;
  256.                                END;
  257.         mpSetUDataOncePtr      = POINTER TO mpSetUDataOnce ;
  258.         mpSetUDataOnce         = RECORD
  259.                                  methodID  : LONGINT ;
  260.                                  udata     : LONGINT ;
  261.                                  attr      : LONGINT ;
  262.                                  val       : LONGINT ;
  263.                                END ;
  264.         mpWriteLongPtr         = POINTER TO mpWriteLong;
  265.         mpWriteLong            = RECORD
  266.                                  methodID  : LONGINT;
  267.                                  val       : LONGINT;
  268.                                  memory    : APTR;
  269.                                END;
  270.         mpWriteStringPtr       = POINTER TO mpWriteString;
  271.         mpWriteString          = RECORD
  272.                                  methodID  : LONGINT;
  273.                                  str       : StrPtr;
  274.                                  memory    : APTR;
  275.                                END;
  276.  
  277. (*\\\*)
  278. (*/// "Family"
  279. *)
  280.  
  281.         mpFamilyAddHeadPtr     = POINTER TO mpFamilyAddHead;
  282.         mpFamilyAddHead        = RECORD
  283.                                  methodID  : LONGINT;
  284.                                  obj       : id.ObjectPtr;
  285.                                END;
  286.         mpFamilyAddTailPtr     = POINTER TO mpFamilyAddTail;
  287.         mpFamilyAddTail        = RECORD
  288.                                  methodID  : LONGINT;
  289.                                  obj       : id.ObjectPtr;
  290.                                END;
  291.         mpFamilyInsertPtr      = POINTER TO mpFamilyInsert;
  292.         mpFamilyInsert         = RECORD
  293.                                  methodID  : LONGINT;
  294.                                  obj       : id.ObjectPtr;
  295.                                  pred      : id.ObjectPtr;
  296.                                END;
  297.         mpFamilyRemovePtr      = POINTER TO mpFamilyRemove;
  298.         mpFamilyRemove         = RECORD
  299.                                  methodID  : LONGINT;
  300.                                  obj       : id.ObjectPtr;
  301.                                END;
  302.         mpFamilySortPtr        = POINTER TO mpFamilySort;
  303.         mpFamilySort           = RECORD
  304.                                  methodID  : LONGINT;
  305.                               (* obj       : ARRAY OF ObjectPtr ; *)
  306.                                END;
  307.         mpFamilyTransferPtr    = POINTER TO mpFamilyTransfer;
  308.         mpFamilyTransfer       = RECORD
  309.                                  methodID  : LONGINT;
  310.                                  family    : id.ObjectPtr;
  311.                                END;
  312.  
  313. (*\\\*)
  314. (*/// "Application"
  315. *)
  316.  
  317.         mpApplicationAboutMUIPtr           = POINTER TO mpApplicationAboutMUI ;
  318.         mpApplicationAboutMUI              = RECORD
  319.                                              methodID  : LONGINT;
  320.                                              refwindow : id.ObjectPtr ;
  321.  
  322.                                            END;
  323.         mpApplicationAddInputHandlerPtr    = POINTER TO mpApplicationAddInputHandler;
  324.         mpApplicationAddInputHandler       = RECORD
  325.                                              methodID  : LONGINT;
  326.                                              ihnode    : mInputHandlerNodePtr;
  327.                                            END;
  328.         mpApplicationCheckRefreshPtr       = POINTER TO mpApplicationCheckRefresh;
  329.         mpApplicationCheckRefresh          = RECORD
  330.                                             methodID   : LONGINT;
  331.                                            END;
  332.         mpApplicationGetMenuCheckPtr       = POINTER TO mpApplicationGetMenuCheck;
  333.         mpApplicationGetMenuCheck          = RECORD
  334.                                              methodID  : LONGINT;
  335.                                              menuId    : LONGINT;
  336.                                            END;
  337.         mpApplicationGetMenuStatePtr       = POINTER TO mpApplicationGetMenuState;
  338.         mpApplicationGetMenuState          = RECORD
  339.                                              methodID  : LONGINT;
  340.                                              menuId    : LONGINT;
  341.                                            END;
  342.         mpApplicationInputPtr  = POINTER TO mpApplicationInput;
  343.         mpApplicationInput                 = RECORD
  344.                                              methodID  : LONGINT;
  345.                                              signal    : POINTER TO LONGSET ;
  346.                                            END;
  347.         mpApplicationInputBufferedPtr      = POINTER TO mpApplicationInputBuffered;
  348.         mpApplicationInputBuffered         = RECORD
  349.                                              methodID  : LONGINT;
  350.                                            END;
  351.         mpApplicationLoadPtr   = POINTER TO mpApplicationLoad;
  352.         mpApplicationLoad                  = RECORD
  353.                                              methodID  : LONGINT;
  354.                                              name      : StrPtr;
  355.                                            END;
  356.         mpApplicationOpenConfigWindowPtr   = POINTER TO mpApplicationOpenConfigWindow;
  357.         mpApplicationOpenConfigWindow      = RECORD
  358.                                              methodID  : LONGINT;
  359.                                              flags     : LONGINT;
  360.                                            END;
  361.         mpApplicationNewInputPtr           = POINTER TO mpApplicationNewInput;
  362.         mpApplicationNewInput              = RECORD
  363.                                              methodID  : LONGINT ;
  364.                                              signal    : POINTER TO LONGSET ;
  365.                                            END;
  366.         mpApplicationPushMethodPtr         = POINTER TO mpApplicationPushMethod;
  367.         mpApplicationPushMethod            = RECORD
  368.                                              methodID  : LONGINT;
  369.                                              dest      : id.ObjectPtr;
  370.                                              count     : LONGINT;
  371.                                              (* ... *)
  372.                                            END;
  373.         mpApplicationRemInputHandlerPtr    = POINTER TO mpApplicationRemInputHandler;
  374.         mpApplicationRemInputHandler       = RECORD
  375.                                              methodID  : LONGINT;
  376.                                              ihnode    : mInputHandlerNodePtr;
  377.                                            END;
  378.         mpApplicationReturnIDPtr           = POINTER TO mpApplicationReturnID;
  379.         mpApplicationReturnID              = RECORD
  380.                                              methodID  : LONGINT;
  381.                                              retid     : LONGINT;
  382.                                            END;
  383.         mpApplicationSavePtr               = POINTER TO mpApplicationSave;
  384.         mpApplicationSave                  = RECORD
  385.                                              methodID  : LONGINT;
  386.                                              name      : StrPtr;
  387.                                            END;
  388.         mpApplicationSetConfigItemPtr      = POINTER TO mpApplicationSetConfigItem;
  389.         mpApplicationSetConfigItem         = RECORD
  390.                                              methodID  : LONGINT;
  391.                                              item      : LONGINT;
  392.                                              data      : APTR;
  393.                                            END;
  394.         mpApplicationSetMenuCheckPtr       = POINTER TO mpApplicationSetMenuCheck;
  395.         mpApplicationSetMenuCheck          = RECORD
  396.                                              methodID  : LONGINT;
  397.                                              menuId    : LONGINT;
  398.                                              stat      : LONGINT;
  399.                                            END;
  400.         mpApplicationSetMenuStatePtr       = POINTER TO mpApplicationSetMenuState;
  401.         mpApplicationSetMenuState          = RECORD
  402.                                              methodID  : LONGINT;
  403.                                              menuId    : LONGINT;
  404.                                              stat      : LONGINT;
  405.                                            END;
  406.         mpApplicationShowHelpPtr           = POINTER TO mpApplicationShowHelp;
  407.         mpApplicationShowHelp              = RECORD
  408.                                              methodID  : LONGINT;
  409.                                              window    : id.ObjectPtr;
  410.                                              name      : StrPtr;
  411.                                              node      : StrPtr;
  412.                                              line      : LONGINT;
  413.                                            END;
  414.  
  415. (*\\\*)
  416. (*/// "Window"
  417. *)
  418.  
  419.         mpWindowAddEventHandlerPtr= POINTER TO mpWindowAddEventHandler;
  420.         mpWindowAddEventHandler   = RECORD
  421.                                     methodID  : LONGINT ;
  422.                                     node      : mEventHandlerNodePtr;
  423.                                   END;
  424.         mpWindowGetMenuCheckPtr   = POINTER TO mpWindowGetMenuCheck;
  425.         mpWindowGetMenuCheck      = RECORD
  426.                                     methodID  : LONGINT;
  427.                                     menuId    : LONGINT;
  428.                                   END;
  429.         mpWindowGetMenuStatePtr   = POINTER TO mpWindowGetMenuState;
  430.         mpWindowGetMenuState      = RECORD
  431.                                     methodID  : LONGINT;
  432.                                     menuId    : LONGINT;
  433.                                   END;
  434.         mpWindowRemEventHandlerPtr= POINTER TO mpWindowRemEventHandler;
  435.         mpWindowRemEventHandler   = RECORD
  436.                                     methodID  : LONGINT ;
  437.                                     node      : mEventHandlerNodePtr;
  438.                                   END;
  439.         mpWindowScreenToBackPtr   = POINTER TO mpWindowScreenToBack;
  440.         mpWindowScreenToBack      = RECORD
  441.                                     methodID  : LONGINT;
  442.                                   END;
  443.         mpWindowScreenToFrontPtr  = POINTER TO mpWindowScreenToFront;
  444.         mpWindowScreenToFront     = RECORD
  445.                                     methodID  : LONGINT;
  446.                                   END;
  447.         mpWindowSetCycleChainPtr  = POINTER TO mpWindowSetCycleChain;
  448.         mpWindowSetCycleChain     = RECORD
  449.                                     methodID  : LONGINT;
  450.                                     (* obj       : ARRAY OF ObjectPtr; *)
  451.                                   END;
  452.         mpWindowSetMenuCheckPtr   = POINTER TO mpWindowSetMenuCheck;
  453.         mpWindowSetMenuCheck      = RECORD
  454.                                     methodID  : LONGINT;
  455.                                     menuId    : LONGINT;
  456.                                     stat      : LONGINT;
  457.                                   END;
  458.         mpWindowSetMenuStatePtr   = POINTER TO mpWindowSetMenuState;
  459.         mpWindowSetMenuState      = RECORD
  460.                                     methodID  : LONGINT;
  461.                                     menuId    : LONGINT;
  462.                                     stat      : LONGINT;
  463.                                   END;
  464.         mpWindowToBackPtr         = POINTER TO mpWindowToBack;
  465.         mpWindowToBack            = RECORD
  466.                                     methodID  : LONGINT;
  467.                                   END;
  468.         mpWindowToFrontPtr        = POINTER TO mpWindowToFront;
  469.         mpWindowToFront           = RECORD
  470.                                     methodID  : LONGINT;
  471.                                   END;
  472.  
  473. (*\\\*)
  474. (*/// Area
  475. *)
  476.  
  477.         mpAskMinMaxPtr         = POINTER TO mpAskMinMax;
  478.         mpAskMinMax            = RECORD
  479.                                  methodID  : LONGINT;
  480.                                  MinMaxInfo: mMinMaxPtr ;
  481.                                END; (* Custom Class *)
  482.  
  483.         mpCleanupPtr           = POINTER TO mpCleanup;
  484.         mpCleanup              = RECORD
  485.                                  methodID  : LONGINT;
  486.                                END; (* Custom Class *)
  487.  
  488.         mpContextMenuBuildPtr  = POINTER TO mpContextMenuBuild;
  489.         mpContextMenuBuild     = RECORD
  490.                                  methodID : LONGINT;
  491.                                  mx,
  492.                                  my       : LONGINT;
  493.                                END;
  494.         mpContextMenuChoicePtr = POINTER TO mpContextMenuChoice;
  495.         mpContextMenuChoice    = RECORD
  496.                                  methodID : LONGINT;
  497.                                  item     : id.ObjectPtr;
  498.                                END;
  499.         mpDragBeginPtr         = POINTER TO mpDragBegin;
  500.         mpDragBegin            = RECORD
  501.                                  methodID : LONGINT;
  502.                                  obj      : id.ObjectPtr;
  503.                                END;
  504.         mpDragDropPtr          = POINTER TO mpDragDrop;
  505.         mpDragDrop             = RECORD
  506.                                  methodID : LONGINT;
  507.                                  obj      : id.ObjectPtr;
  508.                                  x,
  509.                                  y        : LONGINT;
  510.                                END;
  511.         mpDragFinishPtr        = POINTER TO mpDragFinish;
  512.         mpDragFinish           = RECORD
  513.                                  methodID : LONGINT;
  514.                                  obj      : id.ObjectPtr;
  515.                                END;
  516.         mpDragQueryPtr         = POINTER TO mpDragQuery;
  517.         mpDragQuery            = RECORD
  518.                                  methodID : LONGINT;
  519.                                  obj      : id.ObjectPtr;
  520.                                END;
  521.         mpDragReportPtr        = POINTER TO mpDragReport;
  522.         mpDragReport           = RECORD
  523.                                  methodID : LONGINT;
  524.                                  obj      : id.ObjectPtr;
  525.                                  x,
  526.                                  y,
  527.                                  update   : LONGINT;
  528.                                END;
  529.  
  530.         mpDrawPtr              = POINTER TO mpDraw;
  531.         mpDraw                 = RECORD
  532.                                  methodID  : LONGINT;
  533.                                  flags     : MADFlagSet;
  534.                                END; (* Custom Class *)
  535.  
  536.         mpDrawBackgroundPtr    = POINTER TO mpDrawBackground;
  537.         mpDrawBackground       = RECORD
  538.                                  methodID  : LONGINT ;
  539.                                  left,
  540.                                  top,
  541.                                  width,
  542.                                  height,
  543.                                  xoffset,
  544.                                  yoffset,
  545.                                  flags     : LONGCARD;
  546.  
  547.                                END;
  548.  
  549.         mpHandleEventPtr       = POINTER TO mpHandleEvent;
  550.         mpHandleEvent          = RECORD
  551.                                  methodID  : LONGINT;
  552.                                  imsg      : id.IntuiMessagePtr;
  553.                                  muikey    : LONGINT;
  554.                                END; (* Custom Class *)
  555.  
  556.         mpHandleInputPtr       = POINTER TO mpHandleInput;
  557.         mpHandleInput          = RECORD
  558.                                  methodID  : LONGINT;
  559.                                  imsg      : id.IntuiMessagePtr;
  560.                                  muikey    : LONGINT;
  561.                                END; (* Custom Class *)
  562.  
  563.         mpHidePtr              = POINTER TO mpHide;
  564.         mpHide                 = RECORD
  565.                                  methodID  : LONGINT;
  566.                                END; (* Custom Class *)
  567.  
  568.         mpSetupPtr             = POINTER TO mpSetup;
  569.         mpSetup                = RECORD
  570.                                  methodID  : LONGINT;
  571.                                  renderInfo: mRenderInfoPtr;
  572.                                END; (* Custom Class *)
  573.  
  574.         mpShowPtr              = POINTER TO mpShow;
  575.         mpShow                 = RECORD
  576.                                  methodID  : LONGINT;
  577.                                END; (* Custom Class *)
  578.  
  579. (*\\\*)
  580. (*/// "List"
  581. *)
  582.  
  583.         mpListClearPtr         = POINTER TO mpListClear;
  584.         mpListClear            = RECORD
  585.                                  methodID  : LONGINT;
  586.                                END;
  587.  
  588.         mpListCreateImagePtr   = POINTER TO mpListCreateImage ;
  589.         mpListCreateImage      = RECORD
  590.                                  methodID  : LONGINT ;
  591.                                  obj       : id.ObjectPtr ;
  592.                                  flags     : LONGINT ;
  593.                                END ;
  594.         mpListDeleteImagePtr   = POINTER TO mpListDeleteImage ;
  595.         mpListDeleteImage      = RECORD
  596.                                  methodID  : LONGINT ;
  597.                                  listimg   : APTR ;
  598.                                END ;
  599.         mpListExchangePtr      = POINTER TO mpListExchange;
  600.         mpListExchange         = RECORD
  601.                                  methodID  : LONGINT;
  602.                                  pos1      : LONGINT;
  603.                                  pos2      : LONGINT;
  604.                                END;
  605.         mpListGetEntryPtr      = POINTER TO mpListGetEntry;
  606.         mpListGetEntry         = RECORD
  607.                                  methodID  : LONGINT;
  608.                                  pos       : LONGINT;
  609.                                  entry     : POINTER TO APTR;
  610.                                END;
  611.         mpListInsertPtr        = POINTER TO mpListInsert;
  612.         mpListInsert           = RECORD
  613.                                  methodID  : LONGINT;
  614.                                  entries   : POINTER TO APTR;
  615.                                  count     : LONGINT;
  616.                                  pos       : LONGINT;
  617.                                END;
  618.         mpListInsertSinglePtr  = POINTER TO mpListInsertSingle;
  619.         mpListInsertSingle     = RECORD
  620.                                  methodID  : LONGINT;
  621.                                  entry     : APTR;
  622.                                  pos       : LONGINT;
  623.                                END;
  624.         mpListJumpPtr          = POINTER TO mpListJump;
  625.         mpListJump             = RECORD
  626.                                  methodID  : LONGINT;
  627.                                  pos       : LONGINT;
  628.                                END;
  629.         mpListMovePtr          = POINTER TO mpListMove;
  630.         mpListMove             = RECORD
  631.                                  methodID  : LONGINT;
  632.                                  from      : LONGINT;
  633.                                  to        : LONGINT;
  634.                                END;
  635.         mpListNextSelectedPtr  = POINTER TO mpListNextSelected;
  636.         mpListNextSelected     = RECORD
  637.                                  methodID  : LONGINT;
  638.                                  pos       : APTR;
  639.                                END;
  640.         mpListRedrawPtr        = POINTER TO mpListRedraw;
  641.         mpListRedraw           = RECORD
  642.                                  methodID  : LONGINT;
  643.                                  pos       : LONGINT;
  644.                                END;
  645.         mpListRemovePtr        = POINTER TO mpListRemove;
  646.         mpListRemove           = RECORD
  647.                                  methodID  : LONGINT;
  648.                                  pos       : LONGINT;
  649.                                END;
  650.         mpListSelectPtr        = POINTER TO mpListSelect;
  651.         mpListSelect           = RECORD
  652.                                  methodID  : LONGINT;
  653.                                  pos       : LONGINT;
  654.                                  seltype   : LONGINT;
  655.                                  state     : APTR;
  656.                                END;
  657.         mpListSortPtr          = POINTER TO mpListSort;
  658.         mpListSort             = RECORD
  659.                                  methodID  : LONGINT;
  660.                                END;
  661.  
  662.         mpListTestPosPtr       = POINTER TO mpListTestPos;
  663.         mpListTestPos          = RECORD
  664.                                  methodID : LONGINT;
  665.                                  x,
  666.                                  y        : LONGINT;
  667.                                  res      : mListTestPosResultPtr ;
  668.                                END;
  669.  
  670. (*\\\*)
  671. (*/// "Dirlist"
  672. *)
  673.  
  674.         mpDirlistReReadPtr     = POINTER TO mpDirlistReRead;
  675.         mpDirlistReRead        = RECORD
  676.                                  methodID  : LONGINT;
  677.                                END;
  678.  
  679. (*\\\*)
  680. (*/// "Numeric"
  681. *)
  682.  
  683.         mpNumericDecreasePtr   = POINTER TO mpNumericDecrease;
  684.         mpNumericDecrease      = RECORD
  685.                                  methodID  : LONGINT;
  686.                                  amount    : LONGINT;
  687.                                END;
  688.         mpNumericIncreasePtr   = POINTER TO mpNumericIncrease;
  689.         mpNumericIncrease      = RECORD
  690.                                  methodID  : LONGINT;
  691.                                  amount    : LONGINT;
  692.                                END;
  693.         mpNumericScaleToValuePtr           = POINTER TO mpNumericScaleToValue;
  694.         mpNumericScaleToValue  = RECORD
  695.                                  methodID  : LONGINT;
  696.                                  scalemin  : LONGINT;
  697.                                  scalemax  : LONGINT;
  698.                                  scale     : LONGINT;
  699.                                END;
  700.         mpNumericSetDefaultPtr = POINTER TO mpNumericSetDefault;
  701.         mpNumericSetDefault    = RECORD
  702.                                  methodID  : LONGINT;
  703.                                END;
  704.         mpNumericStringifyPtr  = POINTER TO mpNumericStringify;
  705.         mpNumericStringify     = RECORD
  706.                                  methodID  : LONGINT;
  707.                                  value     : LONGINT;
  708.                                END;
  709.         mpNumericValueToScalePtr           = POINTER TO mpNumericValueToScale;
  710.         mpNumericValueToScale  = RECORD
  711.                                  methodID  : LONGINT;
  712.                                  scalemin  : LONGINT;
  713.                                  scalemax  : LONGINT;
  714.                                END;
  715.  
  716. (*\\\*)
  717. (*/// "Pendisplay"
  718. *)
  719.         mpPendisplaySetColormapPtr = POINTER TO mpPendisplaySetColormap ;
  720.         mpPendisplaySetColormap    = RECORD
  721.                                      methodID : LONGINT ;
  722.                                      colormap : LONGCARD ;
  723.                                    END ;
  724.         mpPendisplaySetMUIPenPtr   = POINTER TO mpPendisplaySetMUIPen ;
  725.         mpPendisplaySetMUIPen      = RECORD
  726.                                        methodID : LONGINT ;
  727.                                        muipen   : LONGCARD ;
  728.                                      END ;
  729.         mpPendisplaySetRGBPtr      = POINTER TO mpPendisplaySetRGB ;
  730.         mpPendisplaySetRGB         = RECORD
  731.                                        methodID : LONGINT ;
  732.                                        red,
  733.                                        green,
  734.                                        blue     : LONGCARD ;
  735.                                      END ;
  736. (*\\\*)
  737. (*/// "Group"
  738. *)
  739.  
  740.         mpGroupExitChangePtr   = POINTER TO mpGroupExitChange;
  741.         mpGroupExitChange      = RECORD
  742.                                  methodID  : LONGINT;
  743.                                END;
  744.         mpGroupInitChangePtr   = POINTER TO mpGroupInitChange;
  745.         mpGroupInitChange      = RECORD
  746.                                  methodID  : LONGINT;
  747.                                END;
  748.  
  749.         mpGroupSortPtr         = POINTER TO mpGroupSort;
  750.         mpGroupSort            = RECORD
  751.                                  methodID  : LONGINT;
  752.                               (* obj       : ARRAY OF ObjectPtr ; *)
  753.                                END;
  754.  
  755. (*\\\*)
  756. (*/// "Settingsgroup"
  757. *)
  758.  
  759.         mpSettingsgroupConfigToGadgetsPtr = POINTER TO mpSettingsgroupConfigToGadgets;
  760.         mpSettingsgroupConfigToGadgets    = RECORD
  761.                                             methodID   : LONGINT;
  762.                                             configdata : id.ObjectPtr;
  763.                                           END;
  764.         mpSettingsgroupGadgetsToConfigPtr = POINTER TO mpSettingsgroupGadgetsToConfig;
  765.         mpSettingsgroupGadgetsToConfig    = RECORD
  766.                                             methodID   : LONGINT;
  767.                                             configdata : id.ObjectPtr;
  768.                                           END;
  769.  
  770. (*\\\*)
  771. (*/// "Popstring"
  772. *)
  773.  
  774.         mpPopstringClosePtr    = POINTER TO mpPopstringClose;
  775.         mpPopstringClose       = RECORD
  776.                                  methodID  : LONGINT;
  777.                                  result    : LONGINT;
  778.                                END;
  779.         mpPopstringOpenPtr     = POINTER TO mpPopstringOpen;
  780.         mpPopstringOpen        = RECORD
  781.                                  methodID  : LONGINT;
  782.                                END;
  783.  
  784. (*\\\*)
  785. (*/// "Semaphore"
  786. *)
  787.  
  788.         mpSemaphoreAttemptPtr              = POINTER TO mpSemaphoreAttempt;
  789.         mpSemaphoreAttempt                 = RECORD
  790.                                              methodID  : LONGINT;
  791.                                            END;
  792.         mpSemaphoreAttemptSharedPtr        = POINTER TO mpSemaphoreAttemptShared;
  793.         mpSemaphoreAttemptShared           = RECORD
  794.                                              methodID: LONGINT;
  795.                                            END;
  796.         mpSemaphoreObtainPtr               = POINTER TO mpSemaphoreObtain;
  797.         mpSemaphoreObtain                  = RECORD
  798.                                              methodID  : LONGINT;
  799.                                            END;
  800.         mpSemaphoreObtainSharedPtr         = POINTER TO mpSemaphoreObtainShared;
  801.         mpSemaphoreObtainShared            = RECORD
  802.                                              methodID : LONGINT;
  803.                                            END;
  804.         mpSemaphoreReleasePtr              = POINTER TO mpSemaphoreRelease;
  805.         mpSemaphoreRelease                 = RECORD
  806.                                              methodID  : LONGINT;
  807.                                            END;
  808.  
  809. (*\\\*)
  810. (*/// "Dataspace"
  811. *)
  812.  
  813.         mpDataspaceAddPtr      = POINTER TO mpDataspaceAdd;
  814.         mpDataspaceAdd         = RECORD
  815.                                  methodID  : LONGINT;
  816.                                  data      : APTR;
  817.                                  len       : LONGINT;
  818.                                  dsId      : LONGINT;
  819.                                END;
  820.         mpDataspaceClearPtr    = POINTER TO mpDataspaceClear;
  821.         mpDataspaceClear       = RECORD
  822.                                  methodID  : LONGINT;
  823.                                END;
  824.         mpDataspaceFindPtr     = POINTER TO mpDataspaceFind;
  825.         mpDataspaceFind        = RECORD
  826.                                  methodID  : LONGINT;
  827.                                  id        : LONGINT;
  828.                                END;
  829.         mpDataspaceMergePtr    = POINTER TO mpDataspaceMerge;
  830.         mpDataspaceMerge       = RECORD
  831.                                  methodID  : LONGINT;
  832.                                  dataspace : id.ObjectPtr ;
  833.                                END;
  834.         mpDataspaceReadIFFPtr  = POINTER TO mpDataspaceReadIFF;
  835.         mpDataspaceReadIFF     = RECORD
  836.                                  methodID  : LONGINT;
  837.                                  handle    : IFFHandlePtr;
  838.                                END;
  839.         mpDataspaceRemovePtr   = POINTER TO mpDataspaceRemove;
  840.         mpDataspaceRemove      = RECORD
  841.                                  methodID  : LONGINT;
  842.                                  dsId      : LONGINT;
  843.                                END;
  844.         mpDataspaceWriteIFFPtr = POINTER TO mpDataspaceWriteIFF;
  845.         mpDataspaceWriteIFF    = RECORD
  846.                                  methodID  : LONGINT;
  847.                                  handle    : IFFHandlePtr;
  848.                                  type      : LONGINT;
  849.                                  dsId      : LONGINT;
  850.                                END;
  851.  
  852. (*\\\*)
  853. (* /// BoopsiQuery
  854. *)
  855.         mpBoopsiQueryPtr = POINTER TO mpBoopsiQuery ;
  856.         mpBoopsiQuery    = RECORD
  857.                              methodID    : LONGCARD;
  858.                              screen      : id.ScreenPtr;   (* obsolete   *)
  859.                              flags       : LONGCARD;       (* read only  *)
  860.                              minWidth,                     (* write only *)
  861.                              minHeight,                    (* write only *)
  862.                              maxWidth,                     (* write only *)
  863.                              maxHeight,                    (* write only *)
  864.                              defWidth,                     (* write only *)
  865.                              defHeight   : LONGCARD;       (* write only *)
  866.                              renderInfo  : mRenderInfoPtr; (* read only  *)
  867.  
  868.                              (* may grow in future ... *)
  869.                            END;
  870.  
  871. CONST   mbqfHORIZ    = 1;
  872. CONST   mbqMAXMAX    = 10000;
  873. (* \\\ *)
  874.  
  875. (* (partial) instance data of notify class *)
  876.  
  877. TYPE mNotifyData = RECORD
  878.         mndGlobalInfo       : mGlobalInfoPtr;
  879.         mndUserData         : LONGCARD;
  880.         mndObjectID         : LONGCARD;
  881.         priv1               : LONGCARD;
  882.         priv2               : LONGCARD;
  883.         priv3               : LONGCARD;
  884.         priv4               : LONGCARD;
  885.     END;
  886.  
  887.  
  888. (* mMinMax structure holds information about minimum, maximum
  889.    and default dimensions of an object. *)
  890.  
  891.      mMinMax = RECORD
  892.                 MinWidth   : CARDINAL;
  893.                 MinHeight  : CARDINAL;
  894.                 MaxWidth   : CARDINAL;
  895.                 MaxHeight  : CARDINAL;
  896.                 DefWidth   : CARDINAL;
  897.                 DefHeight  : CARDINAL;
  898.         END;
  899.  
  900. CONST mMAXMAX = 10000; (* use this if a dimension is not limited. *)
  901.  
  902.  
  903. (* Hook message for custom layout *)
  904.  
  905. TYPE
  906.      mLayoutPtr = POINTER TO mLayout;
  907.      mLayout = RECORD
  908.                  Width  : LONGINT;
  909.                  Height : LONGINT;
  910.                  priv5  : LONGCARD;
  911.                  priv6  : LONGCARD;
  912.                END;
  913.  
  914.      mLayoutMsgPtr = POINTER TO mLayoutMsg;
  915.      mLayoutMsg = RECORD
  916.                     lmType     : LONGINT;           (* type of message (see defines below)                      *)
  917.                     lmChildren : ed.MinListPtr;     (* list of this groups children, traverse with NextObject() *)
  918.                     lmMinMax   : mMinMax;           (* results for MUILM_MINMAX                                 *)
  919.                     lmLayout   : mLayout;           (* size (and result) for MUILM_LAYOUT                       *)
  920.                   END ;
  921.  
  922. CONST mlmMINMAX  =  1 ;    (* MUI wants you to calc your min & max sizes *)
  923. CONST mlmLAYOUT  =  2 ;    (* MUI wants you to layout your children      *)
  924. CONST mlmUNKNOWN = -1 ;    (* return this if your hook doesn't implement lm_Type *)
  925.  
  926. (* (partial) instance data of area class *)
  927.  
  928. TYPE mAreaData = RECORD
  929.                 madRenderInfo       : mRenderInfoPtr;       (* RenderInfo for this object *)
  930.                 priv7               : LONGINT;
  931.                 madFont             : gd.TextFontPtr;       (* Font *)
  932.                 madMinMax           : mMinMax;              (* min/max/default sizes *)
  933.                 madBox              : id.IBox;              (* position and dimension *)
  934.  
  935.                 madAddLeft          : SHORTCARD;            (* frame & innerspacing left offset *)
  936.                 madAddTop           : SHORTCARD;            (* frame & innerspacing top offset *)
  937.                 madSubWidth         : SHORTCARD;            (* frame & innerspacing add. width *)
  938.                 madSubHeight        : SHORTCARD;            (* frame & innerspacing add. height *)
  939.  
  940.                 madFlags            : MADFlagSet;           (* see definitions above *)
  941.  
  942.                 (* ... private data follows ... *)
  943.         END;
  944.  
  945.  
  946.  
  947. (* Global information about configuration and parent application. *)
  948.  
  949. TYPE mGlobalInfo = RECORD
  950.                         mgiConfiguration            : mConfigurationPtr;
  951.                         mgiApplicationObject        : id.ObjectPtr;
  952.                         (* ... private data follows ... *)
  953.                      END;
  954.  
  955. (* MUI's draw pens *)
  956.  
  957. CONST mpenShine      = 0 ;
  958. CONST mpenHalfshine  = 1 ;
  959. CONST mpenBackground = 2 ;
  960. CONST mpenHalfshadow = 3 ;
  961. CONST mpenShadow     = 4 ;
  962. CONST mpenText       = 5 ;
  963. CONST mpenFill       = 6 ;
  964. CONST mpenMark       = 7 ;
  965. CONST mpenCount      = 8 ;
  966.  
  967. TYPE mPensPtr = POINTER TO ARRAY [0..mpenCount-1] OF WORD ;
  968.  
  969. (* Mask for pens from MUI_ObtainPen() *)
  970.  
  971. CONST muipenMask = 0000FFFFH ;
  972.  
  973. PROCEDURE muiPen(pen : LONGCARD) : LONGCARD;
  974.  
  975. (* Information on display environment *)
  976.  
  977. TYPE mRenderInfo = RECORD
  978.                             mriWindowObject        : id.ObjectPtr;   (* valid between MUIMSetup/MUIMCleanup *)
  979.  
  980.                             mriScreen              : id.ScreenPtr;   (* valid between MUIMSetup/MUIMCleanup *)
  981.                             mriDrawInfo            : id.DrawInfoPtr; (* valid between MUIMSetup/MUIMCleanup *)
  982.                             mriPens                : mPensPtr;       (* valid between MUIMSetup/MUIMCleanup *)
  983.                             mriWindow              : id.WindowPtr;   (* valid between MUIMShow/MUIMHide *)
  984.                             mriRastPort            : gd.RastPortPtr; (* valid between MUIMShow/MUIMHide *)
  985.  
  986.                             mriFlags               : LONGINT;        (* valid between MUIM_Setup/MUIM_Cleanup *)
  987.  
  988.                         (* ... private data follows ... *)
  989.                      END;
  990.  
  991. TYPE  MRIFlags = (
  992.                   (*
  993.                   ** If mri_Flags & MUIMRI_RECTFILL, RectFill() is quicker
  994.                   ** than Move()/Draw() for horizontal or vertical lines.
  995.                   ** on the current display.
  996.                   *)
  997.  
  998.                   rectFill,
  999.  
  1000.                   (*
  1001.                   ** If mri_Flags & MUIMRI_TRUECOLOR, display environment is a
  1002.                   ** cybergraphics emulated hicolor or true color display.
  1003.                   *)
  1004.  
  1005.                   trueColor,
  1006.  
  1007.                   (*
  1008.                   ** If mri_Flags & MUIMRI_THINFRAMES, MUI uses thin frames
  1009.                   ** (1:1) apsect ratio instead of standard 2:1 frames.
  1010.                   *)
  1011.  
  1012.                   thinFrames,
  1013.  
  1014.                   (*
  1015.                   ** If mri_Flags & MUIMRI_REFRESHMODE, MUI is currently
  1016.                   ** refreshing a WFLG_SIMPLEREFRESH window and is between
  1017.                   ** a BeginRefresh()/EndRefresh() pair.
  1018.                   *)
  1019.  
  1020.                   refreshMode,
  1021.  
  1022.                               mp4,  mp5,  mp6,  mp7,  mp8,  mp9,  mp10, mp11,
  1023.                   mp12, mp13, mp14, mp15, mp16, mp17, mp18, mp19, mp20, mp21,
  1024.                   mp22, mp23, mp24, mp25, mp26, mp27, mp28, mp29, mp30, mp31
  1025.                   (* rest is private, but must be specified to get a LONGSET *)
  1026.                  );
  1027.  
  1028.       MRIFlagSet = SET OF MRIFlags;
  1029.     
  1030.  
  1031. (*
  1032. ** some procedures to get some information about our object 
  1033. *)
  1034.  
  1035. PROCEDURE muiNotifyData(obj : APTR) : mNotifyDataPtr;
  1036. PROCEDURE muiAreaData(obj : APTR) : mAreaDataPtr;
  1037. PROCEDURE muiGlobalInfo(obj : APTR) : mGlobalInfoPtr;
  1038. PROCEDURE muiUserData(obj : APTR) : ADDRESS ;
  1039. PROCEDURE muiRenderInfo(obj : APTR) : mRenderInfoPtr;
  1040.  
  1041. (*
  1042. ** some more specialized functions to retain information about special
  1043. ** object-data like rastport, window, etc.
  1044. **
  1045. ** NOTE: These macros may only be used in custom classes and are
  1046. ** only valid if your class is inbetween the specified methods!
  1047. *)
  1048.  
  1049. PROCEDURE OBJ_app(obj : APTR) : id.ObjectPtr;       (* valid between MUIM_Setup/Cleanup *)
  1050. PROCEDURE OBJ_win(obj : APTR) : id.ObjectPtr;       (* valid between MUIM_Setup/Cleanup *)
  1051. PROCEDURE OBJ_dri(obj : APTR) : id.DrawInfoPtr;     (* valid between MUIM_Setup/Cleanup *)
  1052. PROCEDURE OBJ_screen(obj : APTR) : id.ScreenPtr;    (* valid between MUIM_Setup/Cleanup *)
  1053. PROCEDURE OBJ_pens(obj : APTR) : mPensPtr;          (* valid between MUIM_Setup/Cleanup *)
  1054. PROCEDURE OBJ_window(obj : APTR) : id.WindowPtr;    (* valid between MUIM_Show/Hide *)
  1055. PROCEDURE OBJ_rp(obj : APTR) : gd.RastPortPtr;      (* valid between MUIM_Show/Hide *)
  1056. PROCEDURE OBJ_left(obj : APTR) : INTEGER;           (* valid during MUIM_Draw *)
  1057. PROCEDURE OBJ_top(obj : APTR) : INTEGER;            (* valid during MUIM_Draw *)
  1058. PROCEDURE OBJ_width(obj : APTR) : INTEGER;          (* valid during MUIM_Draw *)
  1059. PROCEDURE OBJ_height(obj : APTR) : INTEGER;         (* valid during MUIM_Draw *)
  1060. PROCEDURE OBJ_right(obj : APTR) : INTEGER;          (* valid during MUIM_Draw *)
  1061. PROCEDURE OBJ_bottom(obj : APTR) : INTEGER;         (* valid during MUIM_Draw *)
  1062. PROCEDURE OBJ_addleft(obj : APTR) : INTEGER;        (* valid during MUIM_Draw *)
  1063. PROCEDURE OBJ_addtop(obj : APTR) : INTEGER;         (* valid during MUIM_Draw *)
  1064. PROCEDURE OBJ_subwidth(obj : APTR) : INTEGER;       (* valid during MUIM_Draw *)
  1065. PROCEDURE OBJ_subheight(obj : APTR) : INTEGER;      (* valid during MUIM_Draw *)
  1066. PROCEDURE OBJ_mleft(obj : APTR) : INTEGER;          (* valid during MUIM_Draw *)
  1067. PROCEDURE OBJ_mtop(obj : APTR) : INTEGER;           (* valid during MUIM_Draw *)
  1068. PROCEDURE OBJ_mwidth(obj : APTR) : INTEGER;         (* valid during MUIM_Draw *)
  1069. PROCEDURE OBJ_mheight(obj : APTR) : INTEGER;        (* valid during MUIM_Draw *)
  1070. PROCEDURE OBJ_mright(obj : APTR) : INTEGER;         (* valid during MUIM_Draw *)
  1071. PROCEDURE OBJ_mbottom(obj : APTR) : INTEGER;        (* valid during MUIM_Draw *)
  1072. PROCEDURE OBJ_font(obj : APTR) : gd.TextFontPtr;    (* valid between MUIM_Setup/Cleanup *)
  1073. PROCEDURE OBJ_minwidth(obj : APTR) : CARDINAL;      (* valid between MUIM_Show/Hide *)
  1074. PROCEDURE OBJ_minheight(obj : APTR) : CARDINAL;     (* valid between MUIM_Show/Hide *)
  1075. PROCEDURE OBJ_maxwidth(obj : APTR) : CARDINAL;      (* valid between MUIM_Show/Hide *)
  1076. PROCEDURE OBJ_maxheight(obj : APTR) : CARDINAL;     (* valid between MUIM_Show/Hide *)
  1077. PROCEDURE OBJ_defwidth(obj : APTR) : CARDINAL;      (* valid between MUIM_Show/Hide *)
  1078. PROCEDURE OBJ_defheight(obj : APTR) : CARDINAL;     (* valid between MUIM_Show/Hide *)
  1079. PROCEDURE OBJ_flags(obj : APTR) : MADFlagSet;
  1080.  
  1081.    
  1082. (* User configurable keyboard events coming with MUIMHandleInput *)
  1083.  
  1084. CONST MUIKEYRELEASE     = -2; (* not a real key, faked when MUIKEYPRESS is released *)
  1085. CONST MUIKEYNONE        = -1;
  1086. CONST MUIKEYPRESS       =  0;
  1087. CONST MUIKEYTOGGLE      =  1;
  1088. CONST MUIKEYUP          =  2;
  1089. CONST MUIKEYDOWN        =  3;
  1090. CONST MUIKEYPAGEUP      =  4;
  1091. CONST MUIKEYPAGEDOWN    =  5;
  1092. CONST MUIKEYTOP         =  6;
  1093. CONST MUIKEYBOTTOM      =  7;
  1094. CONST MUIKEYLEFT        =  8;
  1095. CONST MUIKEYRIGHT       =  9;
  1096. CONST MUIKEYWORDLEFT    = 10;
  1097. CONST MUIKEYWORDRIGHT   = 11;
  1098. CONST MUIKEYLINESTART   = 12;
  1099. CONST MUIKEYLINEEND     = 13;
  1100. CONST MUIKEYGADGETNEXT  = 14;
  1101. CONST MUIKEYGADGETPREV  = 15;
  1102. CONST MUIKEYGADGETOFF   = 16;
  1103. CONST MUIKEYWINDOWCLOSE = 17;
  1104. CONST MUIKEYWINDOWNEXT  = 18;
  1105. CONST MUIKEYWINDOWPREV  = 19;
  1106. CONST MUIKEYHELP        = 20;
  1107. CONST MUIKEYPOPUP       = 21;
  1108. CONST MUIKEYCOUNT       = 22; (* private *)
  1109.  
  1110. CONST MUIKEYFPRESS        = SHIFT(1, MUIKEYPRESS);
  1111. CONST MUIKEYFTOGGLE       = SHIFT(1, MUIKEYTOGGLE);
  1112. CONST MUIKEYFUP           = SHIFT(1, MUIKEYUP);
  1113. CONST MUIKEYFDOWN         = SHIFT(1, MUIKEYDOWN);
  1114. CONST MUIKEYFPAGEUP       = SHIFT(1, MUIKEYPAGEUP);
  1115. CONST MUIKEYFPAGEDOWN     = SHIFT(1, MUIKEYPAGEDOWN);
  1116. CONST MUIKEYFTOP          = SHIFT(1, MUIKEYTOP);
  1117. CONST MUIKEYFBOTTOM       = SHIFT(1, MUIKEYBOTTOM);
  1118. CONST MUIKEYFLEFT         = SHIFT(1, MUIKEYLEFT);
  1119. CONST MUIKEYFRIGHT        = SHIFT(1, MUIKEYRIGHT);
  1120. CONST MUIKEYFWORDLEFT     = SHIFT(1, MUIKEYWORDLEFT);
  1121. CONST MUIKEYFWORDRIGHT    = SHIFT(1, MUIKEYWORDRIGHT);
  1122. CONST MUIKEYFLINESTART    = SHIFT(1, MUIKEYLINESTART);
  1123. CONST MUIKEYFLINEEND      = SHIFT(1, MUIKEYLINEEND);
  1124. CONST MUIKEYFGADGET_NEXT  = SHIFT(1, MUIKEYGADGETNEXT);
  1125. CONST MUIKEYFGADGET_PREV  = SHIFT(1, MUIKEYGADGETPREV);
  1126. CONST MUIKEYFGADGET_OFF   = SHIFT(1, MUIKEYGADGETOFF);
  1127. CONST MUIKEYFWINDOW_CLOSE = SHIFT(1, MUIKEYWINDOWCLOSE);
  1128. CONST MUIKEYFWINDOW_NEXT  = SHIFT(1, MUIKEYWINDOWNEXT);
  1129. CONST MUIKEYFWINDOW_PREV  = SHIFT(1, MUIKEYWINDOWPREV);
  1130. CONST MUIKEYFHELP         = SHIFT(1, MUIKEYHELP);
  1131. CONST MUIKEYFPOPUP        = SHIFT(1, MUIKEYPOPUP);
  1132.  
  1133. (*
  1134. ** now something about dispatchers.
  1135. ** if you have written your dispatcher make sure it has the format of
  1136. ** PROCEDURE Dispatcher(cl : IClassPtr; obj : ADDRESS; msg : ADDRESS) : ADDRESS
  1137. ** (like DispatcherDef)
  1138. ** Then call in your main routine the procedure MakeDispatcher like this :
  1139. ** MakeDispatcher(Dispatcher, MyClass),
  1140. ** where MyClass is the initialized IClassPtr of your new class.
  1141. ** This function will then set up your dispatcher with a little stub which
  1142. ** will restore A4 for your (will mean, your programm will be pure, if you
  1143. ** do all right)
  1144. *)
  1145.  
  1146. (* here the definition of a dispatcher! *)
  1147.  
  1148. TYPE    DispatcherDef = PROCEDURE ( (* class   *) id.IClassPtr,
  1149.                                     (* object  *) ADDRESS,
  1150.                                     (* message *) ADDRESS) : ADDRESS;
  1151.  
  1152. (* this is the template for moCreateCustomClass() ! *)
  1153.  
  1154. TYPE    ClassDispatcher = PROCEDURE ( (* class   *) id.IClassPtr{R.A0},
  1155.                                       (* object  *) ADDRESS{R.A2},
  1156.                                       (* message *) ADDRESS{R.A1}) : ADDRESS;
  1157.  
  1158.  
  1159. (* now the procedure MakeDispatcher : *)
  1160.  
  1161. PROCEDURE MakeDispatcher(entry:DispatcherDef; myclass : id.IClassPtr);
  1162.  
  1163.  
  1164.  
  1165. (* 
  1166. ** at last a little procedure to fill in the values in the MinMax-Record.
  1167. ** You can call it inside an AskMinMax-Method, because it is ever the same...
  1168. *)
  1169.  
  1170. PROCEDURE FillMinMaxInfo (msg : mpAskMinMaxPtr; minWidth   : CARDINAL;
  1171.                                                 defWidth   : CARDINAL;
  1172.                                                 maxWidth   : CARDINAL;
  1173.                                                 minHeight  : CARDINAL;
  1174.                                                 defHeight  : CARDINAL;
  1175.                                                 maxHeight  : CARDINAL);
  1176.  
  1177.  
  1178. (*
  1179. ** 2 useful procedures for testing if some coordinates are inside your object
  1180. ** (converted from the ones in class3.c. So look there how to use... )
  1181. *)
  1182.  
  1183. (* this will test if x is between a and b *)
  1184.  
  1185. PROCEDURE OBJ_between(a,x,b : INTEGER) : BOOLEAN;
  1186.  
  1187. (* this will test, if the position (x, y) is inside the Object obj *)
  1188.  
  1189. PROCEDURE OBJ_isInObject(x, y : INTEGER; obj : id.ObjectPtr) : BOOLEAN;
  1190.  
  1191.  
  1192.  
  1193. (* MUI_CustomClass returned by MUI_CreateCustomClass() *)                                    
  1194.  
  1195. TYPE
  1196.     mCustomClass = RECORD
  1197.                     userData            : APTR;            (* use for whatever you want *)
  1198.                     utilityBase         : ed.LibraryPtr;   (* MUI has opened these libraries *)
  1199.                     dosBase             : ed.LibraryPtr;   (* for you automatically. You can *)
  1200.                     gfxBase             : ed.LibraryPtr;   (* use them or decide to open     *)
  1201.                     intuitionBase       : ed.LibraryPtr;   (* your libraries yourself.       *)
  1202.                                                                                              
  1203.                     super               : id.IClassPtr;    (* pointer to super class   *)
  1204.                     class               : id.IClassPtr;    (* pointer to the new class *)
  1205.  
  1206.                     (* ... private data follows ... *)
  1207.  
  1208.                   END;
  1209.                                                                                              
  1210.  
  1211. END MuiClasses.
  1212.